package com.monkeyboy.list;

import com.monkeyboy.ListNode;

import java.util.List;

/**
 * 在O(1)时间内删除表节点
 *
 * @Author Gavin
 * @date 2021.04.02 10:18
 */
public class List02 {
    public ListNode delete(ListNode head,ListNode toBeDelete) {
        if(head==null||toBeDelete==null){
            return null;
        }
        if(toBeDelete.next!=null){//如果不是是尾节点
            //这儿就是o(1)的操作，主要就是把toBeDelete下一个节点的值赋值
            //给toBeDelete，然后把下一个节点删除掉
            ListNode next=toBeDelete.next;
            toBeDelete.val=next.val;
            toBeDelete.next=next.next;
        }else{//删除的是尾节点
            if(head==toBeDelete){//只有一个节点
                return null;
            }else{//如果删除的是
                ListNode curr=head;
                while (curr.next!=toBeDelete){
                    curr=curr.next;
                }
                curr.next=null;
            }

        }
        return head;
    }

    public static void main(String[] args) {

    }
}
